Если табличное поле отображает данные в виде дерева или иерархического списка, то может возникнуть ситуация, когда необходимо отобразить данные, начиная только с определенного уровня иерархии, включая все подчиненные уровни. Для решения данной задачи предназначено свойство РодительВерхнегоУровня расширений табличных полей списков справочников, планов видов характеристик, а также для списков планов счетов. В качестве значения данного свойства используется значение, идентифицирующее строку отображаемого списка или значение Неопределено. Если данное свойство имеет значение Неопределено, то табличное поле отображает весь список, начиная с верхнего уровня иерархии, иначе в табличном поле отображаются только строки, подчиненные указанной строке. В данном случае, свойство РодительВерхнегоУровня содержит родителя верхнего уровня иерархии, начиная с которого отображаются данные в табличном поле.
Использование данного свойства может быть полезно в случае, когда необходимо ограничить выбор элементов из иерархического справочника. Например, пусть существует справочник контрагентов, состоящий из двух групп элементов: поставщиков и покупателей. Также существует два списка документов, содержащих приходные и расходные накладные. Требуется осуществлять выбор из группы поставщиков данного справочника для списка приходных накладных, и из группы покупателей для списка расходных накладных. Выбор контрагента осуществляется в форме редактирования документа. Следовательно, для реализации данной задачи необходимо воспользоваться событием Начало выбора() поля ввода, в котором редактируется контрагент.
Поясним использование данного метода на примере списка приходных накладных.
В обработчике события Начало выбора() поля ввода нужно получить ссылку на группу "Поставщики" справочника контрагенты. Для этого можно воспользоваться методом НайтиПоНаименованию() менеджера справочника контрагентов. Для передачи полученной ссылки в форму выбора контрагентов необходимо создать в данной форме специальный реквизит РодительВерхнегоУровня и присвоить полученную ссылку этому реквизиту. Затем, в обработчике события При открытии() формы выбора необходимо присвоить значение данного реквизита свойству РодительВерхнегоУровня расширения табличного поля списка справочника.
В нашем случае в форме выбора расположено два табличных поля, отображающих список контрагентов в виде дерева и иерархического списка. Поэтому полученную ссылку необходимо присвоить обоим табличным полям.
Пример обработки события Начало выбора() приведен ниже:
Копировать в буфер обменаПроцедура КонтрагентНачалоВыбора(Элемент, СтандартнаяОбработка) // Получение формы выбора справочника контрагентов ФормаВыбора = Справочники.Контрагенты.ПолучитьФормуВыбора(, Элемент); ФормаВыбора.ПараметрВыборГруппИЭлементов = ИспользованиеГруппИЭлементов.Элементы; // Установка текущего элемента ФормаВыбора.ПараметрТекущаяСтрока = Элемент.Значение; // Установка ограничения на отображение элементов справочника контрагентов ПоставщикиСсылка = Справочники.Контрагенты.НайтиПоНаименованию("Поставщики"); Если ПоставщикиСсылка <> Справочники.Контрагенты.ПустаяСсылка() Тогда ФормаВыбора.РодительВерхнегоУровня = ПоставщикиСсылка; КонецЕсли; ФормаВыбора.Открыть(); СтандартнаяОбработка = Ложь; КонецПроцедуры
Пример обработки события При открытии() формы выбора контрагентов приведен ниже:
Копировать в буфер обменаПроцедура ПриОткрытии() ЭлементыФормы.СправочникДерево.РодительВерхнегоУровня = РодительВерхнегоУровня; ЭлементыФормы.СправочникСписок.РодительВерхнегоУровня = РодительВерхнегоУровня; КонецПроцедуры
В результате в форме выбора контрагентов будут отображаться только поставщики.
Аналогичным образом можно установить ограничение на отображение в форме выбора только элементов, принадлежащих группе "Покупатели". Стоит отметить, что способ получения ссылки на группу справочника по наименованию приведен для примера, и правильней использовать другой способ определения группы.